package cn.wuyi.common.base;



import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Pagination<T> implements java.io.Serializable {
    private static final long serialVersionUID = 1L;
    public static final int DEFAULT_PAGE_SIZE = 10;
    public static final int DEFAULT_PAGE = 1;
    
    private int pageSize; // 每页默认10条数据
    private int page; // 当前页
    private int totalPages; // 总页数
    private int total; // 总数据数
    private List<T> list;   //记录集合
    //分页默认的分页大小属性名，其值通过前端控制器进行传递
    public static final String DEFAULT_PAGE_SIZE_ATTR = "defaultPageSize";
    
    
    private Map<String,Object> params = new HashMap<String,Object>();

    public Pagination(int totalCount, int pageSize) {
        this.init(totalCount, pageSize);
    }

    public Pagination() {
        this.pageSize = DEFAULT_PAGE_SIZE;
        this.page = DEFAULT_PAGE;
    }
    /**
     * 
     * @方法功能说明：获取参数列表（不包括分页参数)
     * @作者        : ce
     * @创建时间    ：2014年7月14日 下午1:04:04 
     * @return
     */
   public Map<String,Object> getParams(){
	   return params;
   }
   /**
    * 
    * @方法功能说明：为分页对象传递参数
    * @作者        : ce
    * @创建时间    ：2014年7月14日 下午1:03:34 
    * @param key
    * @param value
    */
   public void putParamValue(String key,Object value){
	   params.put(key, value);
   }
   /**
    * 
    * @方法功能说明：获取分页对象的参数
    * @作者        : ce
    * @创建时间    ：2014年7月14日 下午1:05:31 
    * @param key
    * @return
    */
   public Object getParamValue(String key){
	   return params.get(key);
   }
   /**
    * 
    * @方法功能说明：清空传递的参数
    * @作者        : ce
    * @创建时间    ：2014年7月14日 下午1:07:01
    */
   public void clearParam(){
	   params.clear();
   }
   

    public int getPage() {
	return page;
}

public void setPage(int page) {
	this.page = page;
}

	/**
     * 初始化分页参数:需要先设置totalRows
     */

    public void init(int total, int pageSize) {
        this.pageSize = pageSize;
        this.total = total;
        if ((total % pageSize) == 0) {
            totalPages = total / pageSize;
        } else {
            totalPages = total / pageSize + 1;
        }
        if(this.page > totalPages && totalPages > 0){
            this.page = totalPages;
        }else if(this.page < 1){
            this.page = 1;
        }
    }

    public void init(int total, int pageSize, int page) {
        this.page = page;
        this.init(total, pageSize);        
    }

    public void init(List<T> list){
        this.list=list;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

 

    public int getTotalPages() {
        return totalPages;
    }

    public void setTotalPages(int totalPages) {
        this.totalPages = totalPages;
    }

     
    public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}

	public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }
}
